package IHM;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 * Classe permettant l'affichage et la gestion des Exportations de projet
 * @author Aubry Thomas
 * @author Bouchet Sylvain
 * @author Fauvel Alexis
 * @author Lessieur Jocelyn
 * @author Mathias Bastien 
 * @author Teuf Antoine
 * @version 1.0
 */
public class FenetreExport extends JDialog implements ActionListener{
	
	/**
	 * Permet d'avoir un lien vers l'instance de L'IHM
	 */
	private IHM ihm;
	
	/**
	 * Liste deroulante contenant la liste des projets
	 */
	private JComboBox comboBoxProjet;
	
	/**
	 * Contient l'adresse de destination de l'exportation
	 */
	private JTextField destination;
	
	/**
	 * Boutons valider, annuler, selectionner
	 */
	private JButton valid,annule,select;
	
	/**
	 * Fichier contenant l'exportation
	 */
	private File fichier;

	/**
	 * Constructeur de la classe FenetreExport
	 * @param ihm	l'instance de la classe IHM de l'application
	 */
	public FenetreExport(IHM ihm) {
		this.ihm = ihm;
		
		setModal(true);
		setTitle("Exporter un projet");
		setLocationRelativeTo(null);
		setLayout(new BorderLayout());
		
		JPanel pan0=new JPanel(new BorderLayout());
		JLabel lab=new JLabel("Selectionner le projet à exporter :");
		String[] tab=new String[ihm.getControleur().getProjets().size()];
		for(int i=0;i<ihm.getControleur().getProjets().size();i++){
			tab[i]=ihm.getControleur().getProjets().get(i).getNom();
		}
		comboBoxProjet=new JComboBox(tab);
		comboBoxProjet.setPreferredSize(new Dimension(300,comboBoxProjet.getPreferredSize().height));
		if(ihm.getControleur().getProjetEnCours()!=null)
			comboBoxProjet.setSelectedItem(ihm.getControleur().getProjetEnCours().getNom());
		pan0.add(lab,"North");
		JPanel panCombo=new JPanel();
		panCombo.add(comboBoxProjet);
		pan0.add(panCombo);
		
		
		JPanel pan1=new JPanel(new BorderLayout());
		JLabel lab2=new JLabel("Choisir la destination où placer le projet exporté :");
		JPanel panDestination=new JPanel();
		destination= new JTextField(20);
		destination.setEditable(false);
		select=new JButton("Choisir");
		select.addActionListener(this);
		panDestination.add(destination);
		panDestination.add(select);
		pan1.add(panDestination);
		pan1.add(lab2,"North");
		
		JPanel pan2=new JPanel();
		valid=new JButton("Valider");
		valid.addActionListener(this);
		annule=new JButton("Annuler");
		annule.addActionListener(this);
		pan2.add(valid);
		pan2.add(annule);
		
		JPanel pan3=new JPanel(new GridLayout(2,1));
		pan3.add(pan0);
		pan3.add(pan1);
		
		add(pan3);
		
		add(pan2,"South");
		
		pack();
		setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource()==annule){
			dispose();
		}
		else if(e.getSource()==select){
			JFileChooser fc = new JFileChooser();
			fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
			int returnVal=fc.showDialog(this,"Choisir");
			
			if(returnVal==JFileChooser.APPROVE_OPTION)
			{
				destination.setText(fc.getSelectedFile().getPath());
			}
		}
		else if(e.getSource()==valid){
			if(destination.getText().isEmpty()){
				JOptionPane.showMessageDialog(this, "Veuillez choisir une destination");
			}
			else{
				File selectedDir = new File(destination.getText());
				ihm.getControleur().exporterProjet((String)comboBoxProjet.getSelectedItem(),selectedDir);
				dispose();
			}
		}
	}
	
	
}
